package com.cctc.juc.common.thread.threadpool.config;

/**
 * [线程池配置信息]
 */
public interface ThreadPoolConfig {
    // CPU 核心数
    int CPU_COUNT = Runtime.getRuntime().availableProcessors();

    // CPU （计算）密集型任务线程池配置：核心线程数，最大线程数
    int CPU_CORE_POOL_SIZE = 0;
    int CPU_MAXIMUM_POOL_SIZE = CPU_COUNT + 1;

    // I/O（本地读写、网络传输）密集型任务线程池配置：核心线程数，最大线程数
    int IO_CORE_POOL_SIZE = 0;
    int IO_MAXIMUM_POOL_SIZE = Math.max(2, CPU_COUNT * 2);

    // 混合型线程池配置：核心线程数，最大线程数（128 或自定义 [从环境变量 mixed.thread.amount 中预先配置]）
    int MIXED_CORE_POOL_SIZE = 0;
    int MIXED_MAXIMUM_POOL_SIZE = 128;
    String MIXED_THREAD_AMOUNT = "mixed.thread.amount";

    // 通用配置：线程空闲存活时间，（有界）工作队列最大容量
    int KEEP_ALIVE_SECONDS = 30;
    int WORK_QUEUE_SIZE = 10000;
}
